// 创建multer实例，设置文件存储路径
const multer = require('multer');
const path = require('path');
const fs = require('fs');

// 确保上传目录存在
const uploadDir = path.join(__dirname, '../upload');
if (!fs.existsSync(uploadDir)) {
    fs.mkdirSync(uploadDir, { recursive: true });
}

// 配置multer
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, uploadDir);
    },
    filename: function (req, file, cb) {
        // 获取文件扩展名
        const ext = path.extname(file.originalname);
        // 生成唯一文件名
        cb(null, Date.now() + ext);
    }
});

// 文件过滤器
const fileFilter = (req, file, cb) => {
    // 允许的文件类型
    const allowedTypes = [
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // .xlsx
        'application/vnd.ms-excel', // .xls
        'text/csv' // .csv
    ];
    
    if (allowedTypes.includes(file.mimetype)) {
        cb(null, true);
    } else {
        cb(new Error('不支持的文件类型，请上传Excel文件'), false);
    }
};

exports.upload = multer({
    storage: storage,
    fileFilter: fileFilter,
    limits: {
        fileSize: 5 * 1024 * 1024 // 限制文件大小为5MB
    }
});

// 定义uploadFileLocal函数，用于处理文件上传
exports.uploadFileLocal = async (req, res) => {
    try {
        // 处理文件上传逻辑
        const files = [];
        //如果为单个文件，将它放入数组
        if (req.file) {
            files.push(req.file);
        } else {
            files.push(...req.files);
        }

        // 构建正确的文件访问路径
        const filePaths = files.map(file => `/uploads/${file.filename}`);

        res.send({
            status: 200,
            message: 'File uploaded successfully.',
            data: {
                filePath: filePaths[0], // 返回第一个文件的路径
                filePaths: filePaths // 返回所有文件的路径
            }
        });
    } catch (error) {
        console.error('文件上传失败:', error);
        res.status(500).send({
            status: 500,
            message: 'File upload failed.',
            error: error.message
        });
    }
};